Field of the Invention
Embodiments of the present invention generally relate to context adaptive binary arithmetic coding (CABAC) of syntax elements in video coding.
Description of the Related Art
Video compression, i.e., video coding, is an essential enabler for digital video products as it enables the storage and transmission of digital video. In general, video compression techniques apply prediction, transformation, quantization, and entropy coding to sequential blocks of pixels in a video sequence to compress, i.e., encode, the video sequence. Video decompression techniques generally perform the inverse of these operations in reverse order to decompress, i.e., decode, a compressed video sequence.
Context-adaptive binary arithmetic coding (CABAC) is a form of entropy coding used in video encoding. CABAC is an inherently lossless compression technique notable for providing considerably better compression than most other encoding algorithms used in video encoding at the cost of increased complexity. In brief, CABAC has multiple probability modes for different contexts. It first converts all non-binary symbols to binary symbols referred to as bins. Then, for each bin, the coder selects which probability model to use, and uses information from nearby elements to optimize the probability estimate. Arithmetic coding is then applied to compress the data. The theory and operation of CABAC coding for H.264/AVC is defined in the International Telecommunication Union, Telecommunication Standardization Sector (ITU-T) standard “Advanced video coding for generic audiovisual services” H.264, revision March 2005 or later, which is incorporated by reference herein. General principles are explained in “Context-Based Adaptive Binary Arithmetic Coding in the H.264/AVC Video Compression Standard,” Detlev Marpe, July 2003, which is incorporated by reference herein.
CABAC is a well known throughput bottleneck in video codec implementations (particularly on the decoder side) primarily due to data dependencies in context selection which make CABAC difficult to parallelize. In CABAC, bins can be either context coded or bypass coded. Bypass coded bins do not require context selection which allows these bins to be processed at a much high throughput than context coded bins. Thus, to improve the throughput of the CABAC, the number of context coded bins should be reduced. However, it is also desirable to reduce the number of bypass coded bins as the number of bypass coded bins are an order of magnitude larger than the number of context coded bins. In general, encoder and decoder hardware is designed for the worst case. Thus, it is important to reduce the worst case number of both context and bypass coded bins.